package com.lianniu.mgr.baseService.area.service;

import com.lianniu.mgr.base.BaseResult;
import com.lianniu.mgr.baseService.area.model.SystemAreaVo;

import java.util.List;

/**
 * @ClassName：类名
 * @Description:类的功能描述

 * @Since: 作成日期
 * @Version:版本
 */
public interface ISystemAreaService {
  /**
   *
   * @Description：查询所有系统区域
   * @Param:
   * @Return:BaseResult
    
   * @Date:2016-03-29
   */
  BaseResult getAllSysArea();
  /**
   *
   * @Description：根据系统区域ID查询父级区域信息
   * @Param:String areaId
   * @Return:BaseResult
   
   * @Date:2016-03-29
   */
  BaseResult getParentSysAreaByAreaId(String areaId);
  /**
   *
   * @Description：根据系统区域ID查询自身区域信息
   * @Param:String areaId
   * @Return:BaseResult
   
   * @Date:2016-03-29
   */
  BaseResult getSysAreaByAreaId(String areaId);



  /**
   * @Description:校验区域编码是否重复
   * @param id
   * @return BaseResult
   
   * @Date:2016年4月10日
   * @Version 1.0.0
   */
  BaseResult isExistSysAreaCode(String id, String areaCode);

  /**
   * @Description:根据staffId获得员工的数据（区域）权限，返回所有区域信息
   *              所有区域信息则包括根节点及其所有子节点
   *              oracle库调用自己选择操作方式
   *              mysql直接用子查询（员工区域表saas_staff2sysarea）
   * @param staffId
   * @return BaseResult(data存储元素类型List<SystemAreaVo>)
   
   * @Date:2016年9月27日下午4:08:17
   * @Version 1.0.0
   */
  BaseResult getAreaByStaffId(String staffId);

  /**
   * @Description:根据staffId获得员工的数据（区域）权限，返回区域树的根节点id集合
   *              区域树根节点，例，权限是A省，B省下的B1市，则省根节点是A省id(List<String>的形式存储)，市根节点是B1市id,
   *              oracle库调用自己选择操作方式
   *              mysql直接用子查询（员工区域表saas_staff2sysarea）
   * @param staffId
   * @return BaseResult(data存储元素类型PrecinctReturnVo)
   
   * @Date:2016年11月10日上午9:54:49
   * @Version 1.0.0
   */
  BaseResult getRootNodeAreasByStaffId(String staffId);

  /**
   * @Description:获取省市县区域信息
   * @param staffId
   * @return BaseResult
   
   * @Date:2016年10月12日上午11:09:35
   * @Version 1.0.0
   */
  BaseResult getProToCouAreaByStaffId(String staffId);

  /**
   * @Description:添加员工管辖区域信息
   * @param staffId
   * @Param userName
   * @param areaIdArr
   * @param oldAreas
   * @Param newAreas
   * @return BaseResult
   
   * @Date:2016年10月12日上午11:32:44
   * @Version 1.0.0
   */
  BaseResult addPrecinct(String staffId,String userName,String[] areaIdArr,String[] oldAreas,String[] newAreas,String[] rootNodes);

  /**
   * @Description:获得全国，省，市，县4级区域信息
   * @param isChecked
   * @return BaseResult
   
   * @Date:2016年10月18日上午9:57:56
   * @Version 1.0.0
   */
  BaseResult get4LevelAreas(String isChecked);

  /**
   * @Description:根据区域id获得下一级区域信息
   * @param areaId
   * @return BaseResult
   
   * @Date:2016年10月28日上午11:21:03
   * @Version 1.0.0
   */
  BaseResult getChildAreaByAreaId(String areaId);

  /**
   * @Description:获得辖区县（企通宝接口）
   * @param staffId
   * @return BaseResult
   
   * @Date:2016年11月15日下午3:35:14
   * @Version 1.0.0
   */
  BaseResult getPrecinctCounty(String staffId);

  /**
   * @Description:获得辖区乡镇（企通宝接口）
   * @param staffId
   * @return BaseResult
   
   * @Date:2016年11月19日上午11:50:51
   * @Version 1.0.0
   */
  BaseResult getPrecinctTown(String staffId);
  /**
   * @Description:根据parentId查询区域信息(systemArea)
   * @param areaId
   * @return BaseResult
   
   * @Date:2016年11月18日
   * @Version 1.0.0
   */
  BaseResult getByParentId(String areaId);

  /**
   * @Description:获取员工管辖区域下的县id集合
   * @param staffId
   * @return BaseResult
   
   * @Date:2016年12月5日下午4:16:18
   * @Version 1.0.0
   */
  BaseResult getCountyIdLiByStaffId(String staffId);
  /**
   *
   * @Title: getAreaLs
   * @Description: admin下获取全部区域
   * @return BaseResult    返回类型
   */
  public BaseResult getAreaLs();

  /**
   * @Description:获取员工管辖区域下的省信息集合
   * @param staffId
   * @return List<SystemAreaVo>
   
   * @Date:2016年12月29日下午3:01:37
   * @Version 1.0.0
   */
  List<SystemAreaVo> getProvincesByStaffId(String staffId);

  /**
   *
   * @Description：新增系统区域
   * @Param:BaseResult
   * @Return:int
   * @Date:2016-03-29
   */
  BaseResult addSysArea(SystemAreaVo areaVo);

  /**
   *
   * @Description：编辑系统区域
   * @Param:BaseResult
   * @Return:int
   * @Date:2016-03-29
   */
  BaseResult editSysArea(SystemAreaVo areaVo);
}
